package Dominio;

import hbt.PersistentObject;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.*;

import dto.ItemOrdenDeCompraTO;
import dto.OrdenCompraTO;

@Entity
@Table(name="ordenes_de_compra")
public class OrdenDeCompra extends PersistentObject{
	
	private static final long serialVersionUID = 1L;
	
	@Column(name = "nroOrdenCompra", nullable = true)
	private int nroOrdenCompra;
	
	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name="idOrdenDeCompra")
	private List <ItemOrdenDeCompra> itemOrdenDeCompra;
	
	@OneToOne(cascade = CascadeType.MERGE)
	@JoinColumn(name="idProveedor")
	private Proveedor proveedor;
	
	@Column(name = "fechaOrdenDeCompra")
	@Temporal(TemporalType.DATE)
	private Date fechaOrdenDeCompra;
	
	/////GETTERS AND SETTERS
	public List<ItemOrdenDeCompra> getItemOrdenDeCompra() {
		return itemOrdenDeCompra;
	}
	public void setItemOrdenDeCompra(List<ItemOrdenDeCompra> itemOrdenDeCompra) {
		this.itemOrdenDeCompra = itemOrdenDeCompra;
	}
	public int getNroOrdenCompra() {
		return nroOrdenCompra;
	}
	public void setNroOrdenCompra(int nroOrdenCompra) {
		this.nroOrdenCompra = nroOrdenCompra;
	}
	public OrdenCompraTO toTO() 
	{
		
		List<ItemOrdenDeCompraTO> itemsOrdenCompraTO = new ArrayList<ItemOrdenDeCompraTO>();
		
		for(ItemOrdenDeCompra itemOC : this.itemOrdenDeCompra)
		{
			itemsOrdenCompraTO.add(itemOC.toTO());
		}

		OrdenCompraTO ocTO = new OrdenCompraTO(this.nroOrdenCompra, itemsOrdenCompraTO);
		return ocTO;
	}
	
	public Proveedor getProveedor() {
		return proveedor;
	}
	public void setProveedor(Proveedor proveedor) {
		this.proveedor = proveedor;
	}
	public Date getFechaOrdenDeCompra() {
		return fechaOrdenDeCompra;
	}
	public void setFechaOrdenDeCompra(Date fechaOrdenDeCompra) {
		this.fechaOrdenDeCompra = fechaOrdenDeCompra;
	}
}